package com.community.process._1010.common.utils;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.community.process._1010.common.api.InPage;
import com.oneadds.lowcode.BaseDto;
import com.oneadds.lowcode.BaseQuery;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

/**
 * mybatis PageUtil
 */
public class PageUtil {

    public static <T> Page<T> page(Integer pageIndex, Integer pageSize){
        if (pageIndex == null){
            pageIndex = 1;
        }
        if (pageIndex <= 0){
            pageIndex = 1;
        }
        if (pageSize == null){
            pageSize = Integer.MAX_VALUE;
        }
        return new Page<>(pageIndex,pageSize);
    }

    public static <T> Page<T> page(InPage page){
        if (page.getPage() == null){
            page.setPage(1);
        }
        if (page.getPage() <= 0){
            page.setPage(1);
        }
        if (page.getPageSize() == null){
            page.setPageSize(Integer.MAX_VALUE);
        }

        if (page.getPageSize() <= 0){
            page.setPageSize(10);
        }
        return new Page<>(page.getPage(),page.getPageSize());
    }

    public static <T> Page<T> page(BaseQuery<T> page){
        if (page.getPage() == null){
            page.setPage(1);
        }
        if (page.getPage() <= 0){
            page.setPage(1);
        }
        if (page.getPageSize() == null){
            page.setPageSize(Integer.MAX_VALUE);
        }

        if (page.getPageSize() <= 0){
            page.setPageSize(10);
        }
        return new Page<>(page.getPage(),page.getPageSize());
    }

    public static PageModel manualPage(Integer pageIndex, Integer pageSize){
        if (pageIndex == null || pageIndex <= 0) {
            pageIndex = 1;
        }
        if (pageSize == null) {
            pageSize = 10;
        }
        pageIndex = (pageIndex - 1) * pageSize;
        return new PageModel(pageIndex,pageSize);
    }

    public static PageModel simplePage(Integer pageIndex, Integer pageSize){
        if (pageIndex == null || pageIndex <= 0) {
            pageIndex = 1;
        }
        if (pageSize == null) {
            pageSize = 10;
        }
        return new PageModel(pageIndex,pageSize);
    }

    @Getter
    @Setter
    @AllArgsConstructor
    @NoArgsConstructor
    public static class PageModel {
        private Integer pageIndex;
        private Integer pageSize;
    }
}
